#pragma once
#include "DXAMLCommon.h"
#include "IObject.h"

class HWTextureManager;
class CMetaCompositor;


struct ICoreCompositorScheduler :
	public IObject
{
public: 
	virtual HRESULT Shutdown() = 0;
	virtual XBOOL IsShutdown() = 0;
	virtual HRESULT GetRenderThreadHR() = 0;
	virtual void ClearRenderThreadHR() = 0;
	virtual HRESULT GetHRForSurfacePresenters() = 0;
	virtual void SetHRForSurfacePresenters(HRESULT) = 0;
	virtual HRESULT Suspend(CMetaCompositor *, HWTextureManager *, struct ICoreServices *) = 0;
	virtual enum RenderThreadState GetRenderThreadState() = 0;
	virtual HRESULT Resume(HWTextureManager *) = 0;
	virtual HRESULT ResumeRenderThreadAfterNewFrame() = 0;
	virtual HRESULT OnRenderStateChanged(unsigned int) = 0;
};